//
//  RoundCornerTableViewController.swift
//  XingCeHelper
//
//  Created by 申铭 on 2023/2/7.
//

import UIKit

class RoundCornerTableViewController: UIViewController {
    
    var tableView: UITableView = UITableView(frame: .zero)

    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.delegate = self
        tableView.dataSource = self
        tableView.keyboardDismissMode = .onDrag
        tableView.backgroundColor = .systemGray6
        if #available(iOS 15.0, *) {
            tableView.sectionHeaderTopPadding = 0
        }
        
        view.backgroundColor = .systemGray6
        view.addSubview(tableView)
        
        tableView.snp.makeConstraints { make in
            make.top.bottom.equalTo(self.view)
            make.left.equalTo(self.view.snp.left).offset(12)
            make.right.equalTo(self.view.snp.right).offset(-12)
        }
    }
}

extension RoundCornerTableViewController: UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return RoundCornerCell()
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
    }
    
    // 处理圆角
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let cornerCell = cell as! RoundCornerCell
        
        // 清除状态，否则复用是会有问题
        cornerCell.layer.mask = nil
        cornerCell.rectCorner = []
        let row = indexPath.row
        // 最后一行
        let lastRow = tableView.numberOfRows(inSection: indexPath.section) - 1
        // 如果是第一行也是最后一行,只有一个cell四个圆角
        if row == 0 && row == lastRow {
            cornerCell.rectCorner = .allCorners
        } else if row == 0 { // 第一行
            cornerCell.rectCorner = [.topLeft, .topRight]
        } else if row == lastRow { // 最后一行
            cornerCell.rectCorner = [.bottomLeft, .bottomRight]
        }
    }
}
